package com.ruoyi.web.controller.api;

import com.mysql.cj.jdbc.MysqlDataSource;
import com.ruoyi.common.annotation.DataScope;
import com.ruoyi.redis.RedisCacheUtil;
import org.apache.catalina.User;

import java.util.List;

/**
 * 协同过滤算法测试
 * @author zhimin.hu
 * @Date 2021/3/8
 */
public class mahoutTest {
    /*public static void main(String[] args) throws TasteException {
        //DataModel dataModel=new MySqlDataModel
        *//*DataModel dataModel = new MySQLJDBCDataModel(String dataSource,
                String preferenceTable,
                String userIDColumn,
                String itemIDColumn,
                String preferenceColumn, String timest
                ampColumn);*//*
      *//*  DataSource dataSource=new MysqlDataSource();
        //内存数据源
        //DataModel model=new GenericDataModel()
        JDBCDataModel dataModel=new MySQLJDBCDataModel(dataSource);
        //DataModel dataModel1=new DataModelBuilder().buildDataModel();
        MySQLJDBCDataModel mySQLJDBCDataModel=new MySQLJDBCDataModel(dataSource);
        //计算相识度
        //皮尔斯算法
        UserSimilarity userSimilarity=new PearsonCorrelationSimilarity(dataModel);
        //欧式（欧几里德）距离相似度
        UserSimilarity similarity=new EuclideanDistanceSimilarity(dataModel);

        ItemSimilarity itemSimilarity=new PearsonCorrelationSimilarity(dataModel);
        //设置相识用户阀值(最近邻域)
        //最近邻域
        //
        //UserNeighborhood 主要实现有两种：
        //NearestNUserNeighborhood：对每个用户取固定数量N个最近邻居
        //ThresholdUserNeighborhood：对每个用户基于一定的限制，取落在相似度限制以内的所有用户为邻居
        UserNeighborhood neighborhood=new ThresholdUserNeighborhood(0.1,userSimilarity,dataModel);

        //创建推荐器
        //推荐引擎
        //Recommender分为以下几种实现：
        //
        //GenericUserBasedRecommender：基于用户的推荐引擎
        //GenericBooleanPrefUserBasedRecommender：基于用户的无偏好值推荐引擎
        //GenericItemBasedRecommender：基于物品的推荐引擎
        //GenericBooleanPrefItemBasedRecommender：基于物品的无偏好值推荐引擎
        Recommender recommender=new GenericUserBasedRecommender(dataModel,neighborhood,userSimilarity);
        Recommender recommender1=new GenericItemBasedRecommender(dataModel,itemSimilarity);

        //获取推荐  给用户1 推荐5个物品
        List<RecommendedItem> recommendedItemList=recommender.recommend(1,5);*//*

    }*/
}
